#========================================
# A Simple Makefile for C/C++ Program
# Author: numax
# Date: 2015/06/28
#========================================


#========================================
# Get Current Operating System Name
#========================================
OS_NAME := $(shell uname -s)

RM := rm -rf
ECHO := echo
COPY := cp -f
MKDIR := mkdir

#========================================
# C Compiler and Options 
#========================================
CC := gcc
CDEF1 := -DLXZAT_SIMU
CDEF2 := -DLXZAT_DEBUG
CDEFS := $(CDEF1) $(CDEF2)
CFLAGS := -O0 -g $(CDEFS)

#========================================
# C Pragram Pre-treatment and Options 
#========================================
CPP := gcc -E
CPPFLAGS :=

#========================================
# C++ Compiler and Compile-Options 
#========================================
CXX := g++
CXXDEF1 := -DLXZAT_SIMU
CXXDEF2 := -DLXZAT_DEBUG
CXXDEFS := $(CXXDEF1) $(CXXDEF2)
CXXFLAGS := -O0 -g $(CXXDEFS)

#========================================
# C++ Pragram Pre-treatment and Options 
#========================================
CXXPP := g++ -E
CXXPPFLAGS :=

#========================================
# Link flags and essential third librarys
#========================================
LDFLAGS := 
LDLIBS := -lpthread

#========================================
# Current Project Name
#========================================
XDBG_CPN := LATServer

#========================================
# All directory for compiling 
#========================================
XDBG_RTDIR := xdbg
XDBG_MYDIR := $(XDBG_RTDIR)/$(XDBG_CPN)
XDBG_DIRS := $(XDBG_RTDIR) $(XDBG_MYDIR)


XDBG_SRC = os_port.c \
          main.c \
          lxz_ftp.c \
          lxz_string.c \
          lxz_spcomm.c \
          lxz_ring.c \
          lxz_debug.c \
          lxz_runlog.c \
          lxz_dbg_vmem.c \
          lxz_inner_cmd.c \
          lxz_exec.c \
          lxz_ccore_cmd.c \
          lxz_sgcc_cmd.c \
          lxz_calc_cmd.c \
          lxz_file_cmd.c \
          lxz_dstring.c \
          lxz_ppplogger.c \
          lxz_cmd_table.c \
          lxz_atc_rsp.c \
          lxz_atc_req.c \
          lxz_urc_table.c \
          latserver.c 

XDBG_OBJS := $(addsuffix .o, $(basename $(XDBG_SRC)))
XDBG_OBJS := $(addprefix $(XDBG_MYDIR)/, $(XDBG_OBJS))

XDBG_BIN := $(addprefix $(XDBG_MYDIR)/, $(XDBG_CPN))

all:$(XDBG_DIRS) $(XDBG_BIN)
	@$(ECHO) OK

$(XDBG_DIRS):
	$(MKDIR) $@

$(XDBG_BIN):$(XDBG_OBJS)
	$(CC) $(CFLAGS) -o $@ $(XDBG_OBJS) $(LDLIBS)

$(XDBG_MYDIR)/%.o:%.c
	$(CC) $(CFLAGS) -c $< -o $@


.PHONY:check clean cleanall install
check: 
	@$(ECHO) OS_NAME: $(OS_NAME)
	@$(ECHO) CC: $(CC)
	@$(ECHO) CFLAGS: $(CFLAGS)
	@$(ECHO) CPP: $(CPP)
	@$(ECHO) CPPFLAGS: $(CPPFLAGS)
	@$(ECHO) CXX: $(CXX)
	@$(ECHO) CXXFLAGS: $(CXXFLAGS)
	@$(ECHO) CXXPP: $(CXXPP)
	@$(ECHO) CXXPPFLAGS: $(CXXPPFLAGS)
	@$(ECHO) $(shell uname -a)

clean:
	-$(RM) $(XDBG_MYDIR)
	
cleanall:
	-$(RM) $(XDBG_RTDIR)

install:
	@$(ECHO) !!!Sorry, Unsupported Now!!!

